package com.example.im.model.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.im.model.bean.UserInfo;
import com.example.im.model.db.UserAccountDB;

//用户账号数据库的操作类
public class UserAccountDao {


    private final UserAccountDB mHelper;

    public UserAccountDao(Context context){
        mHelper = new UserAccountDB(context);
    }

    // 添加用户到数据库
    public void addAccount(UserInfo user){
        //获取数据库对象
        SQLiteDatabase db = mHelper.getReadableDatabase();



        //执行添加操作
        ContentValues values=new ContentValues();
        values.put(UserAccountTable.COL_HXID,user.getHxid());
        values.put(UserAccountTable.COL_NAME,user.getName());
        values.put(UserAccountTable.COL_NICK,user.getNick());
        values.put(UserAccountTable.COL_PHOTO,user.getPhoto());

        //replace表示如果有数据的话就不会去创建，而是替换原来的数据，没有的话就创建。而insert时不管有没有都创建
        db.replace(UserAccountTable.TAB_NAME,null,values);

    }

    // 根据环信id获取所有用户信息
    public UserInfo getAccountByHxId(String hxId){
        //获取数据库对象db才能对数据库进行操作
        SQLiteDatabase db = mHelper.getReadableDatabase();

        //执行查询语句
        String sql="select * from "+UserAccountTable.TAB_NAME+" where "+UserAccountTable.COL_HXID+"=?";
        //rawQuery()方法用于执行select语句。
        // rawQuery()方法的第一个参数为select语句；第二  个参数为select语句中占位符参数的值，如果select语句没有使用占位符，该参数可以设置为null。
        // 带占位符参数的select语句使用例子如下：
        //Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%传智%", "4"});
        //所以下面的第一个参数是select语句，第二个是占位符？的值,表示查询wq:wq的数据
        Cursor cursor=db.rawQuery(sql,new String[]{hxId});//游标指向hxId一列并将其所以用户信息拿到
        UserInfo userInfo=null;
        //cursor的初始位置是-1,而数据是从0开始的，所以cursor.moveToNext()也是就判断下一个位置0是否有数据有的话就遍历
        if(cursor.moveToNext()){
            userInfo = new UserInfo();

            //封装对象
            userInfo.setHxid(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_HXID)));
            userInfo.setName(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_NAME)));
            userInfo.setNick(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_NICK)));
            userInfo.setPhoto(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_PHOTO)));

        }
        //关闭资源
        cursor.close();

        //返回数据
        return userInfo;


    }

}
